import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl
import pandas as pd
# 需要提前安装
# pip install pandas
# pip install openpyxl
mpl.rcParams['font.sans-serif']=['SimHei']#让中文可以正常显示
plt.rcParams['axes.unicode_minus']=False #让负号能够正常显示
data4=pd.read_excel('可视化图表.xlsx',sheet_name=4)
print(data4)
plt.figure()
# bar表示进行绘制柱状图
plt.bar(data4['产品'],data4['销售额(万元)'])
#添加文本
for a,b in zip(data4['产品'],data4['销售额(万元)']):
    plt.text(a,b,b,ha='center',va='bottom',color='b')
plt.show()

# 水平条形图
plt.figure()
plt.barh(range(len(data4)),width=data4['销售额(万元)'],height=0.8)
plt.yticks(range(len(data4)),data4['产品'])
#添加文本
for a,b in zip(range(len(data4)),data4['销售额(万元)']):
    plt.text(b,a,b,ha='left',va='center',color='b')
plt.show()

# 叠加柱状图
data5=pd.read_excel('可视化图表.xlsx',sheet_name=5)
print(data5)
#堆叠图
plt.figure()
plt.bar(data5['季度'],data5['产品A'],label='产品A')
plt.bar(data5['季度'],data5['产品B'],bottom=data5['产品A'], label='产品B',fc='r')
plt.legend()
#添加文本
for a,b,c in zip(data5['季度'],data5['产品A'],data5['产品B']):
    plt.text(a,b/2,b,ha='center',va='bottom',color='w')
    plt.text(a,c/2+b,c,ha='center',va='bottom',color='w')
plt.show()

# 排列柱状图
plt.figure()
bar_width=0.3
tick_label=data5['季度']
x=np.arange(4)
plt.bar(x,data5['产品A'],bar_width,label='产品A')
plt.bar(x+bar_width,data5['产品B'],bar_width,label='产品B',fc='r')
plt.xticks(x+bar_width/2,tick_label)
plt.legend()
for a,b,c in zip(range(4),data5['产品A'],data5['产品B']):
    plt.text(a,b,b,ha='center',va='bottom',color='b')
    plt.text(a+bar_width,c,c,ha='center',va='bottom',color='r')
plt.show()